還記得我們這一路走過的流程嗎?
不過,目前流程只停留在「找到產品」,還沒有把產品放到 CRM 商機裡。
所以今天我們要完成最後一步:
👉 讓找到的產品,直接寫進 Odoo 商機 (CRM Lead)。
這樣一來,客戶只要寄一封詢價信,系統就能:
需求 → Tag → 產品 → 商機
真正實現 端到端的自動化閉環。
這就是我們 30 天旅程的「最終章
」。
來看一個真實案例:
客戶 Gmail:
我要找一支用來切削陶瓷的牙技用刀具,刀尖直徑 0.5mm,長度約 38mm
系統流程:
1️⃣ AI 判斷需求 → 對應 Tag(用途:用途 - 陶瓷、形式:形式 - 牙技、D:D - D0.5、L:L - 38L)
2️⃣ 系統自動查詢 Odoo → 找到產品「ZA026119021202-G」
3️⃣ 系統建立一筆 CRM 商機:
4️⃣ 最後回覆客戶:「✅ 已成功建立商機!」
這樣一來,業務在 Odoo 裡看到的,不再是「一個空白的商機」,而是一份整理好的完整資訊。
前面幾天,我們已經把 Tag 對照、產品查找 都做完了。
那今天的目標就是:把這些資訊「整理乾淨」,然後一次性寫進 Odoo CRM。
整體來說,流程可以分成四個小步驟:
👉 先讓 AI 幫我們格式化 Tag → 再讓 AI 格式化產品清單 → 用 小工具(Text Parser) 把這些 HTML 字串修正乾淨 → 最後 送進 Odoo。
既然我們已經能讓 AI 判斷出對應的 Tag,那第一件事就是要請它「整理」成 CRM 能用的格式。
這裡的重點是:我們希望 CRM 裡的 備註 (description),不要只是一段全部擠在一起的文字,而是有條理的文字,所以我請 AI 幫我產生為 HTML 的語法。
所以我設計了 Prompt,要求 AI 嚴格遵守以下規則:
<br>
結尾<p> ... </p>
裡範例輸出:
<p>符合需求標籤:<br>用途:用途 - 陶瓷<br>形式:形式 - 牙技<br>D:D - D0.5<br>L:L - 38</p>
Prompt範例:
請根據下方內容,嚴格依照以下規範整理成指定格式,並只回傳格式化後的內容,不得有任何說明、標點、註解或程式框:
1.第一行請固定加上「符合需求標籤:<br>」。
2.之後每一個分類(如刀徑、刃數、塗層、用途等)獨立為一行,並以「<br>」結尾。
3.所有內容需包在一對<p>標籤內,且<p>與</p>之間不得有多餘換行、空格或其他符號。
4.行內不可有多餘的空格或標點(除原始內容外),不得自動增加或省略任何tag分類、值或順序。
5.請勿合併、拆分或調整順序,僅能照原內容一行一分類輸出。
6.請勿加上任何解釋、程式框、markdown格式、html以外標籤或任何非內容本身的附註。
內容:{{8.result}}
-----
範例
內容:
刀徑:D - D2、D - D4、D - D6
刃數:刃數 - 1T
塗層:塗層 - 白
用途:用途 - 鋁銅用
回覆:
<p>符合需求標籤:<br>刀徑:D - D2、D - D4、D - D6 <br>刃數:刃數 - 1T <br>塗層:塗層 - 白 <br>用途:用途 - 鋁銅用</p>
請僅依上述規則整理並回傳內容。
有了 Tag,接下來就是把 Odoo 找到的產品資料整理一下。
因為 不可能把 JSON 的格式直接放進 CRM,畫面會非常難以閱讀,所以我一樣讓 AI 幫我轉換成 條列式 HTML。
規則很簡單:
<p> ... </p>
裡範例輸出:
<p>符合商品列表:<br>商品名稱:ZA026119021202-G,庫存:10</p>
Prompt範例:
請根據下方的JSON內容,嚴格依照以下規則整理成指定格式,並只回傳格式化後的內容,不得有任何說明、標點、註解或程式框:
1.請將最上方固定加上「符合商品列表:<br>」。
2.依序讀取每一筆result資料,以「商品名稱:{name},庫存:{qty_available}」為內容,每一筆為一行,並以「<br>」結尾。
3.將所有行包在一對<p>標籤內,且<p>與</p>之間不得有多餘換行、空格或其他符號。
4.請直接以中文全形冒號(:)作為標題與數字之間的分隔,且「庫存」僅顯示整數。
5.資料順序需依原result陣列順序排列,不得增減或調整內容。
6.不得回傳任何說明、標點、程式框、markdown、註解或非內容本身的附加文字。
JSON內容:{{25.data}}
-----
範例
內容:
{"jsonrpc": "2.0", "id": 1, "result": [{"id": 3138, "name": "1AEL-D060-L075", "qty_available": 11.0}, {"id": 3130, "name": "1AES-D020-L050-A10", "qty_available": 15.0}, {"id": 3131, "name": "1AES-D020-L050d6", "qty_available": 16.0}, {"id": 3133, "name": "1AES-D040-L050", "qty_available": 17.0}, {"id": 3136, "name": "1AES-D060-L050", "qty_available": 18.0}, {"id": 3137, "name": "ZA037824022901W", "qty_available": 100.0}]}
回覆:
<p>符合商品列表:<br>商品名稱:1AEL-D060-L075,庫存:11<br>商品名稱:1AES-D020-L050-A10,庫存:15<br>商品名稱:1AES-D020-L050d6,庫存:16<br>商品名稱:1AES-D040-L050,庫存:17<br>商品名稱:1AES-D060-L050,庫存:18<br>商品名稱:ZA037824022901W,庫存:100</p>
請僅依上述規則整理並回傳內容。
AI 在輸出 HTML 時,常會在標籤邊界或字串尾端夾雜 空白字元(空格、換行、tab)。
這些空白進到 JSON 字串裡,有時會讓 Odoo 在寫入或解析時發生錯誤。
因此我用 Text parser → Replace 做兩次清理:
</p>
與下一個 <p>
之間的空白
\s*</p>\s*<p>\s*
</p><p>
</p>
與右雙引號之間的空白
</p>\s*"
</p>"
最後,就是壓軸的一步:把整理好的資訊 寫進 Odoo CRM 商機。
這裡我用 HTTP 的 Make a Request,直接呼叫 crm.lead 的 create:
Request content(詳細說明請參考Day29的步驟2):
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"service": "object",
"method": "execute_kw",
"args": [
"資料庫名稱",
user_id,
"使用者密碼",
"crm.lead",
"create",
[
{
"name": "{{10.from.name}}-{{10.subject}}-{{formatDate(10.date; " YYYY-MM-DD HH:mm:ss"; "Asia/Taipei")}}",
"description":{{29.text}}
}
]
]
},
"id": 1
}
一旦這個步驟跑完,CRM 商機就會自動生成,而且 備註欄位會清楚記錄:
這樣整個流程就完整了:
從客戶寄信 → 到 AI 幫忙解析 → 到產品自動帶入 → 最後寫進商機,沒有任何一步需要人工介入。
實測流程:
我們終於完成了 🎉
把客戶寄來的 Gmail 詢價單,先透過 AI 幫我們根據 TAG 整理 → 再判斷 Odoo 是否有符合的產品 → 最後 丟進 CRM。
這樣的流程,從 需求 → Tag → 產品 → 商機,完整閉環。
但是——
你以為今天就是最後一篇嗎?其實沒有 😏
今天,是整個 自動化流程主題 的最後一篇;
但既然真的寫完了 30 天,總是要留一點空間,說說 我的感想、我的反思,還有我留給大家的「課題」。
所以,明天才是真正的最後一篇。
如果這 30 篇文章,曾經讓你對自動化流程產生興趣,請務必來看看明天的文章。
我會分享:
👉 這 30 天的流程,我認為還有哪些不足
👉 哪些地方還能改進
👉 我的心得與想法
這樣,才算是為這段旅程畫上真正的句號。
所以,明天見啦~